import Vue from 'vue';

export class PageTag {
  page(pageInfo, func, param) {
    if (!func) {
      func = 'page'
    }
    var getPageFunc = function (pageNum) {
      if (!func) func = 'page';
      if (param) {
        return '$vueApp.' + func + '(' + pageNum + ',' + param + ')';
      } else {
        return '$vueApp.' + func + '(' + pageNum + ')';
      }
    };
    var HTML_3DOT_STRING = '<a class="dot">...</a>';
    if (!(pageInfo)) {
      return HTML_3DOT_STRING;
    }
    /** 当前页码 */
    var currentPageNo = pageInfo.pageIndex;
    /** 总页数 */
    var pageCount = pageInfo.pageCount;
    /** 总纪录数 */
    var dataTotal = pageInfo.dataTotal;

    /** 是否存在后一条记录 */
    var hasNext = !((pageInfo.pageIndex >= pageInfo.pageCount));
    /** 是否存在前一条记录 */
    var hasPrevious = !(pageInfo.pageIndex <= 1);
    /** 画面显示的页码按钮数量 */
    var pageNoCount = 10;
    /** 计算分页起始页 */
    var tempPageNo = Math.ceil(currentPageNo / pageNoCount);
    //  上一页
    var prePage = '';
    if (hasPrevious) {
      prePage += ('<a href="javascript:;" onclick="' + getPageFunc(pageInfo.prePage) + '">');
      prePage += ('上一页');
      prePage += ('</a>');
    } else {
      prePage += ('<a class="disabled">上一页</a>');
    }
    //  下一页
    var nextPage = '';
    if (hasNext) {
      nextPage += ('<a href="javascript:;" onclick="' + getPageFunc(pageInfo.nextPage) + '">');
      nextPage += ('下一页');
      nextPage += ('</a>');
    } else {
      nextPage += ('<a class="disabled">下一页</a>');
    }
    //  中间页
    var midPage = '';

    //  总页数<=显示页数
    if (pageCount >= 1 && pageCount <= pageNoCount) {
      for (var i = 1; i <= pageCount; i++) {
        if (currentPageNo === i) {
          midPage += ('<a class="on">' + i + '</a>');
        } else {
          midPage += ('<a href="javascript:;" onclick="' + getPageFunc(i) + '">');
          midPage += (i);
          midPage += ('</a>');
        }
      }
    } else if (pageCount > pageNoCount) { //  总页数>显示页数
      i = 1;
      if (tempPageNo >= 1) i = (tempPageNo - 1) * pageNoCount + 1;
      var HTML_3DOT_STRING_FLAG = false;
      for (; i <= tempPageNo * pageNoCount && i <= pageCount; i++) {
        if (tempPageNo > 1 && !HTML_3DOT_STRING_FLAG) {
          //  加上首页数字
          midPage += '<a href="javascript:;" onclick="' + getPageFunc(1) + '">';
          midPage += (1);
          midPage += ('</a>');
          //  加上...
          midPage += (HTML_3DOT_STRING);
          HTML_3DOT_STRING_FLAG = true;
        }
        if (currentPageNo === i) {
          midPage += ('<a class="on">' + i + '</a>');
        } else {
          midPage += ('<a href="javascript:;" onclick="' + getPageFunc(i) + '">');
          midPage += (i);
          midPage += ('</a>');
        }
        if (i === tempPageNo * pageNoCount) {
          //  加上...
          midPage += (HTML_3DOT_STRING);
          //  //  加上末页数字
          //  midPage += ("<a href=\"javascript:;\" onclick=\"" + getPageFunc(pageInfo.pageCount) + "\">");
          //  midPage += (pageCount);
          //  midPage += ("</a>");
        }
      }
    } else { //  没有数据
      midPage += HTML_3DOT_STRING;
    }
    //  汇总输出
    var pageCom = '';
    pageCom += ('<a class="disabled">共' + dataTotal + '条</a>');
    //  pageCom += ("<div class=\"b_page\">");
    pageCom += (prePage);
    pageCom += (midPage);
    pageCom += (nextPage);
    pageCom += ('<a class="disabled">共' + pageInfo.pageCount + '页</a>');
    pageCom += ('<div class="clear"></div>');
    //  pageCom += ("</div>");
    return pageCom;
  }
}

Vue.prototype.tag = new PageTag();
